package com.qfedu.vhr.system.service.impl;

import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qfedu.vhr.common.RespBean;
import com.qfedu.vhr.common.RespPageBean;
import com.qfedu.vhr.system.entity.Joblevel;
import com.qfedu.vhr.system.excel.JobLevelListener;
import com.qfedu.vhr.system.mapper.JoblevelMapper;
import com.qfedu.vhr.system.service.IJoblevelService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author zhangsan
 * @since 2023-01-10
 */
@Service
public class JoblevelServiceImpl extends ServiceImpl<JoblevelMapper, Joblevel> implements IJoblevelService {

    @Override
    public RespPageBean getAllJobLeveIsByPage(Integer page, Integer size) {
        Page<Joblevel> p = page(Page.of(page, size));
        //获取当前记录
        List<Joblevel> records = p.getRecords();
        //获取总记录数
        long total = p.getTotal();
        RespPageBean respPageBean = new RespPageBean();
        respPageBean.setData(records);
        respPageBean.setTotal(total);
        return respPageBean;
    }
//
//    @Override
//    public RespPageBean getAllJobLeveIsByPage(Integer page, Integer size) {
//        return null;
//    }

    @Override
    public RespBean addJoblevel(Joblevel joblevel) {
        QueryWrapper<Joblevel> qw = new QueryWrapper<>();
        //        比较 看名字有没有重复
        qw.lambda().eq(Joblevel::getName, joblevel.getName());
        Joblevel one = getOne(qw);
        //不为空说明已经有了该职位
        if (one != null) {
            return RespBean.error("职位重复，添加失败");
        }
        joblevel.setEnabled(true);
        joblevel.setCreateDate(LocalDateTime.now());
        return save(joblevel) ? RespBean.ok("添加成功") : RespBean.error("添加失败");
    }

    @Override
    public RespBean importJobLevel(MultipartFile file) {
        try {
            EasyExcel.read(file.getInputStream(), Joblevel.class, new JobLevelListener(this)).sheet().doRead();
            return RespBean.ok("导入成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return RespBean.error("导入失败");
    }

    @Override
    public RespBean updateJoblevel(Joblevel joblevel) {
        joblevel.getId();
        QueryWrapper<Joblevel> qw = new QueryWrapper<>();
        qw.lambda().eq(Joblevel::getName,joblevel.getName()).ne(Joblevel::getId,joblevel.getId());
        Joblevel one = getOne(qw);
//        joblevel.getId();
        if (one!=null){
            return RespBean.error("职位名称重复更新失败");
        }
        return updateById(joblevel)?RespBean.ok("更新成功"):RespBean.error("更新失败");
    }
}
